//package com.adingxiong.pm.config;
//
//import com.adingxiong.pm.realm.MyRealm;
//import org.apache.shiro.realm.Realm;
//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
//
//import org.apache.shiro.mgt.SecurityManager;
//
//
//import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.LinkedHashMap;
//import java.util.Map;
//
//@Configuration
//public class ShiroConfig {
//
//    /**
//     * 创建自定义的验证规则
//     * @return
//     */
//    @Bean
//    public Realm myRealm() {
//        return new MyRealm();
//    }
//
//    /**
//     * 创建安全管理
//     * 注意创建实现了web的对象
//     * @return
//     */
//    @Bean
//    public SecurityManager  securityManager() {
//        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
//       // DefaultSecurityManager manager = new DefaultSecurityManager();
//        manager.setRealm(myRealm());
//        System.out.println("shiro-=---安全管理创建成功");
//        return manager;
//    }
//
//    /**
//     * 创建自定义 过滤规则
//     *        anon : 表示匿名可以使用
//     *        anthc ： 表示需要登录认证才可以使用
//     *        roles ：  参数可以写多个数组
//     *        perms ： 参数可以写多个  /admins/user/**=perms[“user:add:,user:modify:”]，
//     *        rest：根据请求的方法，相当于/admins/user/**=perms[user:method] ,其中method为post，get，delete等
//     *
//     * @return
//     */
//    @Bean
//    public ShiroFilterFactoryBean shiroFilterFactoryBean(){
//        ShiroFilterFactoryBean filter  = new ShiroFilterFactoryBean();
//        filter.setSecurityManager(securityManager());
//
//        //拦截没有登录的去登录
//        filter.setLoginUrl("/pm/pmuser/notLogin");
//        //拦截没有权限的去没有权限的页面
//        filter.setUnauthorizedUrl("/pm/pmuser/noAuthorize");
//        //进行权限控制  ， 必须使用LinkHashMap ，shiro 要安装顺序设置
//        Map<String,String> map = new LinkedHashMap<>();
//
//        //游客不拦截
//        map.put("/pm/guest/**" , "anon");
//        //只允许user权限访问
//        map.put("/pm/user/*" ,"roles[user]");
//        //只允许admin权限访问
//        map.put("/pm/admin/*","roles[admin]");
//        //登录页面 不拦截
//        map.put("/pm/pmuser/login","anon");
//        /*最后在写剩下的所有全部拦截,否则会造成拦截所有的url
//        * 因为shiro读取拦截是按照顺序的 ，所以拦截所以的应该放在最后面
//        * */
//        map.put("/pm/**", "authc");
//        filter.setFilterChainDefinitionMap(map);
//        System.out.println("shiro拦截器创建成功");
//        return filter;
//
//    }
//
//
//
//}
